package com.syf.model;

import com.syf.domain.SysMenu;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.security.core.authority.SimpleGrantedAuthority;

import java.util.List;

/**
 * 登录成功的返回值：（toke、菜单、权限）
 *      Swagger注解-@ApiModel 和 @ApiModelProperty:
 *          1.@ApiModel
 *              使用场景:在实体类上边使用，标记类时swagger的解析类
 *              概述:提供有关swagger模型的其它信息，类将在操作中用作类型时自动内省
 *                  value： 为模型提供备用名称
 *
 *          2.@ApiModelProperty()用于方法，字段； 表示对model属性的说明或者数据操作更改
 *              使用场景： 使用在被 @ApiModel 注解的模型类的属性上
 *              概述:添加和操作模型属性的数据
 *                  value–字段说明
 *                  name–重写属性名字
 *                  dataType–重写属性类型
 *                  required–是否必填
 *                  example–举例说明
 *                  hidden–隐藏
 */
@Data                 //get、set方法等
@AllArgsConstructor   //有参构造
@NoArgsConstructor    //无参构造
@ApiModel(value = "登录的结果") //Swagger注解
public class LoginResult {
    /**
     * 登录成功的token，来自我们的authorization-server 里面的
     */
    @ApiModelProperty(value = "登录成功的token，来自我们的authorization-server 里面的") //Swagger注解 字段说明
    private String token ;

    /**
     * 该用户的菜单数据
     */
    @ApiModelProperty(value = "该用户的菜单数据")
    private List<SysMenu> menus ;

    /**
     * 该用户的权限数据
     *
     * SimpleGrantedAuthority中只有一个   private final String role
     */
    @ApiModelProperty(value = "该用户的权限数据")
    private List<SimpleGrantedAuthority> authorities ;

    @ApiModelProperty(value = "软件厂商ID")
    private Integer companyId ;


}
